UniLearn 教務處需要一份 2026 年虛構學期的課程成績報告。請彙總 有效選課,包含尚未取得成績的學生。
準備你的 PostgreSQL 資料
- 在 pgAdmin 查詢工具開啟你的練習資料庫。將 自動提交 設為開啟。
- 選擇 開啟檔案 ,並選擇另外提供的
lab5_setup.sql。 - 執行整個檔案。它會選取
lab5結構描述。在同一個查詢工具中,從 程式碼 複製檢查查詢,並確認有 36 列。
一列代表什麼?
一列代表 一位學生在一門課程中的選課紀錄。S101 選修三門課程,因此 S101 會出現三次。選課數與學生數可能不同。
建立教務處報告
- 計算選課數、已記錄成績數,以及不重複學生數。
- 計算每門課程的總計與平均。
- 保留符合所要求彙總條件的課程。
💡 彙總前請先閱讀
NULL 表示沒有已記錄的成績; 0 是已記錄的成績。退選紀錄仍保留在資料表中,但會從報告中排除。預覽:36 筆選課中的前 12 筆
完整的 enrolments 資料表包含六門課程中的 20 位不重複學生。六列退選紀錄將從報告中篩除。執行檢查查詢即可查看全部 36 列。
| 選課 | 學生 | 課程計畫 | 課程 | 狀態 | 成績 | 時數 |
|---|---|---|---|---|---|---|
| E01 | S101 | DSAI | SQL101 | active | 80 | 6 |
| E02 | S102 | CS | SQL101 | active | 60 | 4 |
| E03 | S103 | DSAI | SQL101 | active | NULL | 5 |
| E04 | S104 | IT | SQL101 | withdrawn | 90 | 2 |
| E05 | S101 | DSAI | PY101 | active | 90 | 8 |
| E06 | S105 | CS | PY101 | active | 50 | 6 |
| E07 | S106 | DSAI | PY101 | active | 70 | 7 |
| E08 | S107 | IT | PY101 | active | NULL | 3 |
| E09 | S102 | CS | VIS101 | active | 40 | 4 |
| E10 | S108 | DSAI | VIS101 | active | NULL | 2 |
| E11 | S109 | IT | VIS101 | withdrawn | 100 | 1 |
| E12 | S110 | IT | VIS101 | active | 0 | 1 |
閱讀各欄位
enrolment_id可識別單一選課紀錄;student_id可能會重複。score是滿分 100 的分數,若未記錄則為 NULL。study_hours記錄此選課的時數。
💡 PostgreSQL 語法
文字值使用單引號。數字與 SQL
NULL 則不用。每條陳述式以分號結尾。SET search_path TO lab5;
SELECT *
FROM enrolments
ORDER BY enrolment_id;新增查詢工具或重新連線?
設定檔會為目前連線選取結構描述。請在新連線中執行下列指令一次,之後即可正常使用課程查詢。
SET search_path TO lab5;